﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CallCenter.Data.Base
{
    public static class DataBaseExtensions
    {
        public static SqlCommand AddParameter(this SqlCommand cmd, SqlParameter param)
        {
            cmd.Parameters.Add(param);
            return cmd;
        }
        public static SqlCommand AddParameter(this SqlCommand cmd, string name, string data = "", int size = 500, bool isInputParameter = true)
        {
            var parameter = cmd.CreateParameter();
            parameter.SqlDbType = System.Data.SqlDbType.NVarChar;
            parameter.ParameterName = name;
            parameter.Size = size;
            parameter.Value = data;

            if (!isInputParameter)
                parameter.Direction = System.Data.ParameterDirection.Output;

            cmd.Parameters.Add(parameter);
            return cmd;
        }

        public static SqlCommand AddParameter(this SqlCommand cmd, string name, Guid data, bool isInputParameter = true)
        {
            var parameter = cmd.CreateParameter();
            parameter.SqlDbType = System.Data.SqlDbType.UniqueIdentifier;
            parameter.ParameterName = name;
            parameter.Value = data;

            if (!isInputParameter)
                parameter.Direction = System.Data.ParameterDirection.Output;
            cmd.Parameters.Add(parameter);
            return cmd;
        }

        public static SqlCommand AddParameter(this SqlCommand cmd, string name, int data, bool isInputParameter = true)
        {
            var parameter = cmd.CreateParameter();
            parameter.SqlDbType = System.Data.SqlDbType.Int;
            parameter.ParameterName = name;
            parameter.Value = data;

            if (!isInputParameter)
                parameter.Direction = System.Data.ParameterDirection.Output;

            cmd.Parameters.Add(parameter);
            return cmd;
        }
        public static SqlCommand AddParameter(this SqlCommand cmd, string name, decimal data, bool isInputParameter = true)
        {
            var parameter = cmd.CreateParameter();
            parameter.SqlDbType = System.Data.SqlDbType.Decimal;
            parameter.ParameterName = name;
            parameter.Value = data;

            if (!isInputParameter)
                parameter.Direction = System.Data.ParameterDirection.Output;
            cmd.Parameters.Add(parameter);
            return cmd;
        }
        public static SqlCommand AddParameter(this SqlCommand cmd, string name, DateTime data, bool isInputParameter = true)
        {
            var parameter = cmd.CreateParameter();
            parameter.SqlDbType = System.Data.SqlDbType.DateTime;
            parameter.ParameterName = name;
            parameter.Value = data;

            if (!isInputParameter)
                parameter.Direction = System.Data.ParameterDirection.Output;
            cmd.Parameters.Add(parameter);
            return cmd;
        }
    }
}
